with the function pointer, although ANSI C allows the '*' to be omitted! The following function takes one function pointer and one float as arguments, and returns the result of applying the function pointed to by the function pointer twice.
The calling function passes the address of the desired function as an argument to the called function. As with array identifiers, the function identifier itself represents its address - the '&' operator is not needed. The calling function may pass the square() function to perform_twice() as an argument, in order to find the 4th power of a value: